package com.liunian.duplication2.listnode;

public class ReverseList206 {

    /**
     给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。
     示例 1：
     输入：head = [1,2,3,4,5]
     输出：[5,4,3,2,1]
     示例 2：
     输入：head = [1,2]
     输出：[2,1]
     示例 3：
     输入：head = []
     输出：[]

     */
    public ListNode reverseList(ListNode head) {
        return reverseNode(head, null);
    }

    private ListNode reverseNode(ListNode head, ListNode tail) {
        if (head == null) {
            return tail;
        }
        ListNode tmp = head.next;
        head.next = tail;
        return reverseNode(tmp, head);
    }


}
